#include <iostream>
using namespace std;

int binary_search(int sz[], int length) {
	int l = 0, h = length - 1;
	int m = -1;

	while (l <= h) {
		if (sz[l] < sz[h])
			return sz[l];

		m = (l + h) /2;
		if (sz[l] < sz[m])
			l = m + 1;
		else if (sz[l] > sz[m])
			h = m - 1;
		else {
			if (sz[m] == sz[h]) {
				h--;
				l++;
			}
			else if (sz[m] < sz[h]) {
				h = m;
			}
			else {
				l = m + 1;
			}
		}
	}

	return sz[m];
}

//int main() {
//	int sz[]  = {3,4,5,1,2};
//	int sz1[] = {1,2,3,4,5};
//	int sz2[] = {1,0,1,1,1};
//	int sz3[] = {1,1,1,1,1};
//	int rt  = binary_search(sz,  5);
//	int rt1 = binary_search(sz1, 5);
//	int rt2 = binary_search(sz2, 5);
//	int rt3 = binary_search(sz3, 5);
//}